import goods from '@/data/goods.js';

const cart = {
  namespaced: true,
  state() {
    return {
      items: goods // 使用导入的goods对items进行初始化
    }
  },
  mutations: {
    pushItemToCart(state, g) {
      // 判断商品对象g的id
      if (!g.id) return;
      state.items.push(g);
    },
    deleteItem(state, id) {
      // 根据提交的id，查找是否存在相同id的商品，返回商品的索引
      let index = state.items.findIndex(item => item.id === id);
      if (index >= 0){
        state.items.splice(index, 1);
      }
    },
    incrementItemCount(state, {id ,count}){
      let item = state.items.find(item => item.id === id);
      if (item) {
        item.count += count;  // count为1，则加一；count为-1，则减一
      }
    }
  },
  getters: {
    cartItemPrice(state) {
      return function(id) {
        let item = state.items.find(item => item.id === id);
        if (item) {
          return item.price * item.count;
        }
      }
    },
    cartTotalPrice(state){
      return state.items.reduce((total, item) => {
        return total + item.price * item.count;
      }, 0)
    }
  },
  actions: {
    addItemToCart(context, g) {
      let item = context.state.items.find(item => item.id === g.id);
      // 如果添加的商品已经在购物车中存在，则只增加购物车中商品的数量
      if(item) {
        context.commit('incrementItemCount', g);
      }
      // 如果添加上商品是新商品，则加入到购物车中
      else {
        context.commit('pushItemToCart', g);
      }
    }
  }
}

export default cart;
